import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * clase que  hace como va a actuar los cuchillos que arroje el jugador
 * 
 * @author Omar Espino
 * @version 20/11/2014
 */
public class Kunai extends Armas
{
    public final int DERECHA=1;
    public final int IZQUIERDA=0;
   /**metodo principal para actuar "es llamado por greenfoot automaticamente"*/
    public void act() 
    {
        movimiento();
        borraCuchillo();
    }    
    /**metodo que hace el movimiento de los cuchillos de acuerdo a una direccion*/
    public void movimiento()
    {
     if(isTouching(Baseizq.class) || isTouching(Baseder.class) )
     {
        getWorld().removeObject(this);   
     }
     else
     {
        if(getRotation()==180)
        {
           setLocation(getX()-4,getY());  
        }
        if(getRotation()==0)
        {
         setLocation(getX()+4,getY()); 
        }
        if(getRotation()==270)
        {
            setLocation(getX(),getY()-4);
        }
     }
    }
    /**meotodo que borra el cuchillo cuando toca algun objeto señalado*/
    public void borraCuchillo()
    {
      if(isTouching(Enemigo.class) || isTouching(Baseizq.class) || isTouching(Baseder.class) || isTouching(Obstaculo.class)) 
      {
         removeTouching(Bolanieve.class);
         matarFocaPorCuchillo();
         matarOsoPorCuchillo();
         matarTerodactiloPorCuchillo();
         atacaJefe();
         getWorld().removeObject(this);
      }
      
    }
    
    /**metodo para matar una foca por medio de un cuchillo*/
    public void matarFocaPorCuchillo()
    {
        MundoIceClimber mundo=(MundoIceClimber)getWorld();

        if(isTouching(Foca.class))
        {
            int x,y;
            Foca foca1=(Foca)getOneIntersectingObject(Foca.class);
            x=foca1.getX();
            y=foca1.getY();

            getWorld().removeObject(foca1);
            mundo.getCartelPuntos().add(100);
           
            if(Greenfoot.getRandomNumber(2)==1)
            {
                Cuchillos pack=new Cuchillos();
                getWorld().addObject(pack,x,y);
            }
          mundo.getPersonaje().aumentaFocasMuertas();
        }
    }
    
    /**metodo para matar osos por medio de un cuchillo*/
    public void matarOsoPorCuchillo()
    {
         MundoIceClimber mundo=(MundoIceClimber)getWorld();
        if(isTouching(Osopolar.class))
        {
            int x,y;
            Osopolar oso1=(Osopolar)getOneIntersectingObject(Osopolar.class);
            x=oso1.getX();
            y=oso1.getY();
            oso1.setSangre(50);

            if(oso1.getDireccion()==DERECHA)
            {
                oso1.setLocation(oso1.getX()+15,oso1.getY());
            }
            else
            {
                oso1.setLocation(oso1.getX()-15,oso1.getY());
            }

            if(oso1.getSangre()<=0)
            {
                getWorld().removeObject(oso1);
                mundo.getCartelPuntos().add(150);
           
                if(Greenfoot.getRandomNumber(2)==1)
                {
                    Bombas pack=new Bombas();
                    getWorld().addObject(pack,x,y);
                }
                 mundo.getPersonaje().aumentaOsosMuertos();
            }

        }

    }
    
     /**metodo para matar terodactilos por medio del cuchillo*/
    public void matarTerodactiloPorCuchillo()
    {
         MundoIceClimber mundo=(MundoIceClimber)getWorld();
        if(isTouching(Terodactilo.class))
        {
            int x,y;
            Terodactilo ter1=(Terodactilo)getOneIntersectingObject(Terodactilo.class);
            x=ter1.getX();
            y=ter1.getY();
            getWorld().removeObject(ter1);
            mundo.getCartelPuntos().add(100);
           
            if(Greenfoot.getRandomNumber(1)==0)
            {
                Cuchillos pack=new Cuchillos();
                getWorld().addObject(pack,x,y);
            }
            mundo.getPersonaje().aumentaTerodactilosMuertos();
        }
       
    }
    
    /**metodo para quitarle salud al jefe */
    public void atacaJefe()
    {
        MundoIceClimber mundo=(MundoIceClimber)getWorld();
        if(isTouching(Jefe.class))
        {
            mundo.getCartelPuntos().add(50);        
            mundo.getJefe().setHealt(50);
        }
    }
}
